package 常用类库API;
import java.util.*;

/*
 1,Comparable接口:
   类定义时: 类名 implements Comparable<类名>{类属性 方法; 实现Comparable的 comparTo()方法}  一般比较本类
   需要修改类体，不符合oo设计原则
   基于面向对象原则，对扩展开放对修改关闭的话，用下面接口
 2,Comparator接口:新建一个扩展类 实现此接口
   用法 Arrays.sort(待排序对象[]，Comparator实现类对象)
*/
public class 对象比较器
{
	public static void main(String[] args){
		int[] i={14,21,36,7,5,6,8,11,26,46};
		Arrays.sort(i);//对原数组排序
		System.out.println(Arrays.toString(i));
		
		String[] str={"jack","mm","小明","李磊","学习","tom","Apple","Sort","dog",};
		Arrays.sort(str);
		System.out.println(Arrays.toString(str));//英文按首字母，中文估计安ascii码
		
		//但是对对象进行排序呢
		//首先测试的Cat类没有实现Comparable接口，会报错
		//异常:Cat cannot be cast to java.lang.Comparable，
		//Cat转换Comparable错误，说明如果对象需要比较大小，类定义时需要实现Comparable接口
		//实现接口后，需要实现其方法，自定义排序
		Cat[] cats={new Cat("喵喵",1),new Cat("tom",4),new Cat("小花",6),new Cat("咪咪",3),};
		Arrays.sort(cats);
		System.out.println(Arrays.toString(cats));
		
		//如果类已写好，不想重新修改的话，可以新建一个类实现Comparator接口
		Dog[] dogs={new Dog("喵喵",1),new Dog("tom",4),new Dog("小花",6),new Dog("咪咪",3),};
		Arrays.sort(dogs,new DogCompare());//sort()方法里面有个Comparator实现类对象的参数
		System.out.println(Arrays.toString(dogs));
		
		
	}
}
